using System;

namespace VSTalk.Tools
{
    /// <summary>
    /// Substitutes ordinary delegate <see cref="Action{T1,T2,T3}"/> with a class instance 
    /// </summary>
    /// <typeparam name="T"></typeparam>
    public interface IActionWrapper<in T1, in T2, in T3>
    {
        void Exec(T1 o1, T2 o2, T3 o3);
    }

    /// <summary>
    /// Substitutes ordinary delegate <see cref="Action{T1,T2}"/> with a class instance 
    /// </summary>
    /// <typeparam name="T"></typeparam>
    public interface IActionWrapper<in T1, in T2>
    {
        void Exec(T1 o1, T2 o2);
    }

    /// <summary>
    /// Substitutes ordinary delegate <see cref="Action{T}"/> with a class instance 
    /// </summary>
    /// <typeparam name="T"></typeparam>
    public interface IActionWrapper<in T>
    {
        void Exec(T o);
    }
}